{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "2f75b481",
   "metadata": {},
   "source": [
    "# FIR滤波器结构：第Ⅳ类线性相位型\n",
    "\n",
    "画出单位脉冲响应为 h(n)=0.5,-0.5,1,-1,0,1,-1,0.5,-0.5 的第Ⅳ型线性相位滤波器的幅度函数和相位函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9cbfd6ee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#library\n",
    "import numpy as np;from math import *\n",
    "import matplotlib.pyplot as plt;from matplotlib import ticker\n",
    "\n",
    "#单位脉冲响应\n",
    "h = np.array([0.5,-0.5,1,-1,1,-1,0.5,-0.5]) #N为偶数，奇对称\n",
    "N = len(h);L = int(N/2)\n",
    "\n",
    "#幅度函数和相位函数\n",
    "d = 2*h[L-1::-1] #d(n)各值\n",
    "n = np.arange(L)+0.5;w = np.arange(501)*2*pi/500\n",
    "d = d.reshape(-1,1);w = w.reshape(-1,1) #将d(n)和w(n)转为一列\n",
    "Hw = np.dot(np.sin(w*n),d);Pw = -w*(L-0.5)+pi/2 ##幅度函数和相位函数\n",
    "\n",
    "#绘制单位响应\n",
    "fig,ax = plt.subplots();ax.stem(h,basefmt=\"\")\n",
    "ax.set_title('第IV类线性相位的h(n)');ax.set_xlabel('n')\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False #用来显示负号\n",
    "fig.savefig('./fir_linear_phase4_1.png',dpi=500)\n",
    "\n",
    "#绘制幅度函数和相位函数\n",
    "fig,axs = plt.subplots(2,1,constrained_layout=True)\n",
    "axs[0].plot(w/pi,Hw);axs[1].plot(w/pi,Pw/pi)\n",
    "axs[0].set_title('第IV类线性相位的幅度函数');axs[0].grid()\n",
    "axs[0].set_xlabel('frequency');axs[0].set_ylabel(r'$ H( \\omega )$')\n",
    "formatter = ticker.FormatStrFormatter('%1.2f$ \\pi$')\n",
    "axs[0].xaxis.set_major_formatter(formatter)\n",
    "axs[1].set_title('第IV类线性相位的相位函数');axs[1].grid()\n",
    "axs[1].set_xlabel('frequency');axs[1].set_ylabel(r'$ \\theta ( \\omega )$')\n",
    "axs[1].xaxis.set_major_formatter(formatter)\n",
    "axs[1].yaxis.set_major_formatter(formatter)\n",
    "plt.show();fig.savefig('./fir_linear_phase4_2.png',dpi=500)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9c2c69e2",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
